package com.lh.bootcommon.utils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * @author lh
 * @Description: 时间工具类
 * @date 2021/4/1 11:07
 */
public class DateUtil {
	/**
	 * 将Date类型转换为字符串
	 *
	 * @param date 日期类型
	 * @return 日期字符串
	 */
	public static String format(Date date) {
		return format(date, "yyyy-MM-dd HH:mm:ss");
	}

	/**
	 * 将Date类型转换为字符串
	 *
	 * @param date  日期类型
	 * @param pattern 字符串格式
	 * @return 日期字符串
	 */
	public static String format(Date date, String pattern) {
		if (date == null) {
			return "null";
		}
		if (pattern.equals("") || pattern.equals("null")) {
			pattern = "yyyy-MM-dd HH:mm:ss";
		}
		return new SimpleDateFormat(pattern).format(date);
	}

	/**
	 * 将字符串转换为Date类型
	 *
	 * @param date 字符串类型
	 * @return 日期类型
	 */
	public static Date format(String date) {
		return format(date, "null");
	}

	/**
	 * 将字符串转换为Date类型
	 *
	 * @param date    字符串类型
	 * @param pattern 格式
	 * @return 日期类型
	 */
	public static Date format(String date, String pattern) {
		if (pattern == null || pattern.equals("") || pattern.equals("null")) {
			pattern = "yyyy-MM-dd HH:mm:ss";
		}
		if (date == null || date.equals("") || date.equals("null")) {
			return new Date();
		}
		Date d = null;
		try {
			d = new SimpleDateFormat(pattern).parse(date);
		} catch (ParseException e) {
			System.out.println(e.getMessage());
		}
		return d;
	}

	/**
	 * @param date1
	 * @param date2
	 * @return
	 * @Description:比较两个日期的天数差
	 * @Check parameters by the 【caller】 or 【itself】(参数由谁校验)
	 */
	public static int daysBetween(Date date1, Date date2) {

		Calendar cal = Calendar.getInstance();

		cal.setTime(date1);
		long time1 = cal.getTimeInMillis();
		cal.setTime(date2);
		long time2 = cal.getTimeInMillis();
		long between_days = (time2 - time1) / (1000 * 3600 * 24);
		return Integer.parseInt(String.valueOf(between_days));

	}

	/**
	 * @param date1
	 * @param date2
	 * @return
	 * @Description:比较两个日期的秒数差
	 * @Check parameters by the 【caller】 or 【itself】(参数由谁校验)
	 */
	public static int secondsBetween(Date date1, Date date2) {

		Calendar cal = Calendar.getInstance();

		cal.setTime(date1);
		long time1 = cal.getTimeInMillis();
		cal.setTime(date2);
		long time2 = cal.getTimeInMillis();
		long between_days = (time2 - time1) / (1000);
		return Integer.parseInt(String.valueOf(between_days));

	}
}
